CONSTRAINT - klauzula

Ograniczenie jest podobne do indeksu, chocia┐ mo┐e byµ r≤wnie┐ u┐yte do ustanowienia relacji z inn╣ tabel╣.

Mo┐na u┐yµ klauzuli CONSTRAINT w instrukcjach ALTER TABLE i CREATE TABLE ,aby dodaµ lub usun╣µ ograniczenia. Istniej╣ dwa typy klauzul CONSTRAINT: s│u┐╣ca do narzucania ogranicze± na pojedyncze pole oraz s│u┐╣ca do narzucania ogranicze± na wiΩcej ni┐ jedno pole.


Uwaga Aparat bazy danych Microsoft Jet nie obs│uguje klauzuli CONSTRAINT, ani te┐ ┐adnej z instrukcji jΩzyka definicji danych (DDL) u┐ywanych w odniesieniu do baz danych nie u┐ywaj╣cych aparatu Microsoft Jet. W przypadku takich baz nale┐y u┐yµ metody DAO Create.


Sk│adnia

Ograniczenie dla pojedynczego pola:

CONSTRAINT nazwa {PRIMARY KEY | UNIQUE | NOT NULL |
    REFERENCES tabela_obca [(pole_obce_1, pole_obce_2)]
    [ON UPDATE CASCADE | SET NULL]
    [ON DELETE CASCADE | SET NULL]}

Ograniczenie dla wielu p≤l:

CONSTRAINT nazwa
    {PRIMARY KEY (podstawowe_1[, podstawowe_2 [, ...]]) |
    UNIQUE (unikatowe_1[, unikatowe_2 [, ...]]) |
    NOT NULL (niepuste_1[, niepuste_2 [, ...]]) |
    FOREIGN KEY [NO INDEX] (odwo│anie_1[, odwo│anie_2 [, ...]]) REFERENCES tabela_obca [(pole_obce_1[, pole_obce_2 [, ...]])]}
    [ON UPDATE CASCADE | SET NULL]
    [ON DELETE CASCADE | SET NULL]}

Sk│adnia klauzuli CONSTRAINT zawiera nastΩpuj╣ce elementy:

Element Opis
nazwa Nazwa tworzonego ograniczenia.
podstawowe_1, podstawowe_2 Nazwa pola lub p≤l, kt≤re maj╣ sk│adaµ siΩ na klucz podstawowy.
unikatowe_1, unikatowe_2 Nazwa pola lub p≤l, kt≤re maj╣ sk│adaµ siΩ na klucz unikatowy.
niepuste_1, niepuste_2 Nazwa pola lub p≤l, kt≤rych warto£ci musz╣ byµ r≤┐ne od Null.
odes│anie_1, odes│anie_2 Nazwa pola lub p≤l klucza obcego, czyli wskazuj╣cych na pola w innej tabeli.
tabela_obca Nazwa tabeli obcej zawieraj╣cej pole lub pola okre£lone przez argumenty pole_obce.
pole_obce_1, pole_obce_2 Nazwa pola lub p≤l w tabeli_obcej okre£lonych przez  odwo│anie_1, odwo│anie_2. Mo┐esz pomin╣µ ow╣ klauzulΩ, je┐eli pola lub pole, do kt≤rego nast╣pi│o odwo│anie jest kluczem podstawowym tabeli_obcej.

Uwagi

Sk│adnia ograniczenia dla pojedynczego pola w klauzuli definiuj╣cej pole w instrukcji ALTER TABLE lub CREATE TABLE, wystΩpuje zaraz po okre£leniu typu danych pola.

Sk│adnia ograniczenia dla wielu p≤l jest u┐ywana wtedy, gdy s│owo zastrze┐one CONSTRAINT wystΩpuje poza klauzul╣ definicji pola w instrukcji ALTER TABLE lub CREATE TABLE.

Za pomoc╣ klauzuli CONSTRAINT mo┐na okre£liµ dla pola nastΩpuj╣ce typy ograniczenia:

Aby zapobiec automatycznemu tworzeniu siΩ indeks≤w dla kluczy obcych, mo┐na u┐yµ modyfikatora NO INDEX. Ta forma definicji klucza obcego powinna byµ u┐yta tylko w wypadku, gdy warto£ci indeksu wynikowego by│yby czΩsto duplikowane. W wypadku, gdy warto£ci w indeksie klucza obcego s╣ czΩsto duplikowane, u┐ycie indeksu mo┐e byµ mniej wydajne ni┐ zwyk│e przegl╣danie tabeli. Obs│ugiwanie indeksu tego typu, z wierszami dodawanymi i usuwanymi z tabeli, obni┐a wydajno£µ i nie przynosi ┐adnej korzy£ci.

Zobacz te┐
ADD USER - instrukcja CREATE USER lub GROUP - instrukcja
ALTER USER lub DATABASE - instrukcja CREATE VIEW - instrukcja
ALTER TABLE - instrukcja DROP - instrukcja
CREATE INDEX û instrukcja DROP USER lub GROUP - instrukcja
CREATE PROCEDURE - instrukcja GRANT - instrukcja
CREATE TABLE û instrukcja REVOKE - instrukcja

Przyk│ad

CREATE TABLE - instrukcja, CONSRAINT - klauzula - przyk│ad